বাইনারি ফাইল হ্যান্ডলিং C++ এ এমন একটি প্রক্রিয়া যেখানে ডেটা ফাইলের ভিতরে বাইনারি ফর্ম্যাটে সংরক্ষণ বা পড়া হয়। সাধারণত টেক্সট ফাইলের ক্ষেত্রে ডেটা মানব-পঠনযোগ্য থাকে, তবে বাইনারি ফাইলে ডেটা সংরক্ষণ করা হয় বাইনারি ফর্ম্যাটে, যা সরাসরি মেশিন-রিডেবল। এতে করে ফাইলের আকার কম হয় এবং পড়া/লেখার গতি বাড়ে।
C++ এ বাইনারি ফাইল হ্যান্ডলিং এর জন্য fstream
লাইব্রেরির ifstream
এবং ofstream
ক্লাস ব্যবহার করা হয়। ios::binary
মোডটি ব্যবহার করে ফাইল বাইনারি মোডে খোলা হয় এবং ডেটা লিখতে বা পড়তে write()
এবং read()
মেথড ব্যবহার করা হয়।
write() মেথড ব্যবহার করে ডেটা বাইনারি ফাইলে লেখা হয়। এর জন্য ডেটার ঠিকানা ও ডেটার সাইজ ইনপুট হিসেবে দিতে হয়।
#include <iostream>
#include <fstream>
using namespace std;
struct Person {
char name[20];
int age;
float height;
};
int main() {
Person person1 = {"John Doe", 30, 5.9};
// বাইনারি ফাইল খোলা এবং ডেটা লেখা
ofstream outFile("person.dat", ios::binary);
if (!outFile) {
cout << "Error opening file for writing." << endl;
return 1;
}
// স্ট্রাকচারের ডেটা বাইনারি ফাইলে লেখা
outFile.write(reinterpret_cast<char*>(&person1), sizeof(person1));
outFile.close();
cout << "Data written to binary file successfully." << endl;
return 0;
}
বর্ণনা:
Person
নামে একটি স্ট্রাকচার ডিফাইন করা হয়েছে, যা name
, age
, এবং height
নামে তিনটি ডেটা মেম্বার ধারণ করে।"person.dat"
নামে একটি বাইনারি ফাইল খোলা হয়েছে এবং write()
মেথড ব্যবহার করে person1
অবজেক্টের ডেটা লেখা হয়েছে।reinterpret_cast<char*>
ব্যবহার করে ডেটার ঠিকানা ক্যারেক্টার পয়েন্টারে রূপান্তর করা হয়েছে।read() মেথড ব্যবহার করে ডেটা বাইনারি ফাইল থেকে পড়া হয়। read()
মেথডেও ডেটার ঠিকানা এবং ডেটার সাইজ ইনপুট হিসেবে দিতে হয়।
#include <iostream>
#include <fstream>
using namespace std;
struct Person {
char name[20];
int age;
float height;
};
int main() {
Person person1;
// বাইনারি ফাইল খোলা এবং ডেটা পড়া
ifstream inFile("person.dat", ios::binary);
if (!inFile) {
cout << "Error opening file for reading." << endl;
return 1;
}
// স্ট্রাকচারের ডেটা পড়া
inFile.read(reinterpret_cast<char*>(&person1), sizeof(person1));
inFile.close();
// পড়া ডেটা প্রদর্শন করা
cout << "Name: " << person1.name << endl;
cout << "Age: " << person1.age << endl;
cout << "Height: " << person1.height << endl;
return 0;
}
বর্ণনা:
"person.dat"
ফাইলটি বাইনারি মোডে খোলা হয়েছে এবং read()
মেথড ব্যবহার করে person1
অবজেক্টে ডেটা পড়া হয়েছে।person1
অবজেক্টে সংরক্ষিত হয়েছে এবং পরে cout
দিয়ে প্রদর্শন করা হয়েছে।বাইনারি ফাইলে একাধিক রেকর্ড সংরক্ষণ এবং পড়ার জন্য একটি লুপ ব্যবহার করা হয়। প্রতিটি রেকর্ডের জন্য write()
এবং read()
মেথড কল করা হয়।
#include <iostream>
#include <fstream>
using namespace std;
struct Person {
char name[20];
int age;
float height;
};
int main() {
Person persons[2] = { {"Alice", 28, 5.5}, {"Bob", 32, 5.8} };
// বাইনারি ফাইল খোলা এবং একাধিক রেকর্ড লেখা
ofstream outFile("persons.dat", ios::binary);
if (!outFile) {
cout << "Error opening file for writing." << endl;
return 1;
}
for (int i = 0; i < 2; i++) {
outFile.write(reinterpret_cast<char*>(&persons[i]), sizeof(persons[i]));
}
outFile.close();
cout << "Multiple records written to binary file successfully." << endl;
return 0;
}
#include <iostream>
#include <fstream>
using namespace std;
struct Person {
char name[20];
int age;
float height;
};
int main() {
Person persons[2];
// বাইনারি ফাইল খোলা এবং একাধিক রেকর্ড পড়া
ifstream inFile("persons.dat", ios::binary);
if (!inFile) {
cout << "Error opening file for reading." << endl;
return 1;
}
for (int i = 0; i < 2; i++) {
inFile.read(reinterpret_cast<char*>(&persons[i]), sizeof(persons[i]));
}
inFile.close();
// পড়া ডেটা প্রদর্শন করা
for (int i = 0; i < 2; i++) {
cout << "Name: " << persons[i].name << ", Age: " << persons[i].age << ", Height: " << persons[i].height << endl;
}
return 0;
}
write(): ফাইলে বাইনারি ডেটা লেখা হয়।
outFile.write(reinterpret_cast<char*>(&data), sizeof(data));
read(): বাইনারি ফাইল থেকে ডেটা পড়া হয়।
inFile.read(reinterpret_cast<char*>(&data), sizeof(data));
write()
মেথড ব্যবহার করে ডেটা ফাইলে লেখা হয়।read()
মেথড ব্যবহার করে ডেটা ফাইল থেকে পড়া হয়।বাইনারি ফাইল হ্যান্ডলিং ব্যবহারে ডেটা দ্রুত এবং নিরাপদে সংরক্ষণ এবং পরিচালনা করা যায়।
common.read_more